using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using ClickSocial.Framework;
using ClickSocial.Components;
using ClickSocial.Entities;
using System.Globalization;
using System.Web.Profile;

namespace ClickSocial.Admin
{
    public partial class Ventas : CDefault
    {
        #region Campos
        private string _UserFotografo = string.Empty;
        #endregion

        #region Propiedades

        public string Mensaje
        {
            get { return lblMensaje.Text; }
            set 
            {
                lblMensaje.Visible = !value.Equals(string.Empty);
                lblMensaje.Text = value; 
            }
        }

        public DateTime? FechaDesde
        {
            get
            {
                string fecha_input = string.Format("{0}-{1}-{2}", ddlDiaDesde.SelectedValue, ddlMesDesde.SelectedValue, ddlAnoDesde.SelectedValue);
                DateTime? fecha = null;

                if (fecha_input == "0-0-0")
                {
                    fecha = null;
                }
                else
                {
                    DateTime f;

                    if (DateTime.TryParse(fecha_input, out f))
                    {
                        fecha = f;
                    }
                    else
                    {
                        throw new Exception("La fecha desde no es valida");
                    }
                }
                return fecha;
            }
        }

        public DateTime? FechaHasta
        {
            get
            {
                string fecha_input = string.Format("{0}-{1}-{2}", ddlDiaHasta.SelectedValue, ddlMesHasta.SelectedValue, ddlAnoHasta.SelectedValue);
                DateTime? fecha = null;

                if (fecha_input == "0-0-0")
                {
                    fecha = null;
                }
                else
                {
                    DateTime f;

                    if (DateTime.TryParse(fecha_input, out f))
                    {
                        fecha = f;
                    }
                    else
                    {
                        throw new Exception("La fecha hasta no es valida");
                    }
                }
                return fecha;
            }
        }

        public string Estado
        {
            get
            {
                return ddlEstado.SelectedValue;
            }
        }

        public string CampoBusqueda
        {
            get
            {
                return ddlTipoBusqueda.SelectedValue;
            }
        }

        public string TextoBusqueda
        {
            get
            {
                return txtBuscarVenta.Text;
            }
        }

        public string UserFotografo
        {
            get
            {
                if (_UserFotografo == string.Empty && User.IsInRole(Global.RolesApp.Fotografo))
                    _UserFotografo = User.Identity.Name;

                return _UserFotografo;
            }

            set
            {
                _UserFotografo = value;
            }
        } 
        #endregion
      
        #region Eventos
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            Mensaje = string.Empty;
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
                BindData();
            Mensaje = string.Empty;
        }

        protected void lnkbtnBorrar_Click(object sender, CommandEventArgs e)
        {
            long venta_id = Convert.ToInt64(e.CommandArgument as string);

            if (User.IsInRole(Global.RolesApp.Host))
                Components.Ventas.Delete(venta_id);
            else if (User.IsInRole(Global.RolesApp.Fotografo))
                Components.Ventas.DeleteByFotografo(venta_id, User.Identity.Name);

            BindData();
        }

        protected void ddlTipoBusqueda_Init(object sender, EventArgs e)
        {
            ddlTipoBusqueda.Items.Add(new ListItem("Opciones", ""));
            ddlTipoBusqueda.Items.Add(new ListItem("UserCliente", "Cliente"));

            if (User.IsInRole(Global.RolesApp.Fotografo) || User.IsInRole(Global.RolesApp.Host))
            {
                ddlTipoBusqueda.Items.Add(new ListItem("UserFotografo", "Fotografo"));
            }
        }

        protected void ddlMesDesde_Init(object sender, EventArgs e)
        {
            BindMonth(sender);
        }

        protected void ddlMesHasta_Init(object sender, EventArgs e)
        {
            BindMonth(sender);
        }

        protected void ddlAnoDesde_Init(object sender, EventArgs e)
        {
            BindYear(sender);
        }

        protected void ddlAnoHasta_Init(object sender, EventArgs e)
        {
            BindYear(sender);
        }

        protected void ddlDiaDesde_Init(object sender, EventArgs e)
        {
            BindDia(sender);
        }

        protected void ddlDiaHasta_Init(object sender, EventArgs e)
        {
            BindDia(sender);
        }

        protected void btnBuscarVenta_Click(object sender, EventArgs e)
        {
            BindData();
        }
        #endregion

        #region Metodos
        private void BindData()
        {
            try
            {
                PagedDataSource Paginacion = new PagedDataSource();
                Paginador paginador = new Paginador(Request["page"], Request.Path, Request.QueryString);

                paginador.PageDS.DataSource = Components.Ventas.BuscarVentas(FechaDesde, FechaHasta, Estado, CampoBusqueda, TextoBusqueda, UserFotografo);
                paginador.PageDS.AllowPaging = true;
                paginador.PageDS.PageSize = 50;
                litPaginador.Text = paginador.Render();


                if (paginador.PageDS.Count == 0)
                {                    
                    Mensaje = "No hay resultados para esta busqueda";
                }

                RepeaterVentas.Visible = !paginador.PageDS.Count.Equals(0);
                RepeaterVentas.DataSource = paginador.PageDS;
                RepeaterVentas.DataBind();
            }
            catch (Exception ex)
            {
                Mensaje = ex.Message;

                RepeaterVentas.DataSource = null;
                RepeaterVentas.DataBind();
            }

        }

        private void BindMonth(object sender)
        {
            DropDownList ddlFecha = sender as DropDownList;
            int idx = 0;

            ddlFecha.Items.Add(new ListItem("0", "0"));
            for (int month = 1; month < 13; month++)
            {
                idx++;
                ddlFecha.Items.Add(new ListItem(idx.ToString(), idx.ToString()));
            }
        }

        private void BindYear(object sender)
        {
            int intYear;
            DropDownList ddlano = sender as DropDownList;

            ddlano.Items.Add(new ListItem("0", "0"));
            for (intYear = DateTime.Now.Year - 10; intYear < DateTime.Now.Year + 10; intYear++)
            {
                ddlano.Items.Add(new ListItem(intYear.ToString(), intYear.ToString()));
            }
        }

        private void BindDia(object sender)
        {
            DropDownList ddldia = sender as DropDownList;
            ddldia.Items.Add(new ListItem("0", "0"));
            for (int dia = 1; dia < 32; dia++)
                ddldia.Items.Add(new ListItem(dia.ToString(), dia.ToString()));
        }
        #endregion
        
    }
}
